package org.ladybug.service.admin;

import java.security.NoSuchAlgorithmException;
import java.util.Date;

import org.apache.commons.lang.RandomStringUtils;
import org.ladybug.dao.persistence.InfoUtente;
import org.ladybug.dao.persistence.Ruolo;
import org.ladybug.dao.persistence.Utente;
import org.springframework.security.providers.encoding.ShaPasswordEncoder;
import org.springframework.test.AbstractDependencyInjectionSpringContextTests;

public class AdminServiceImplTest extends
		AbstractDependencyInjectionSpringContextTests {

	
	
	private AdminService adminService;
	
	public void testInsertNewUtente() throws NoSuchAlgorithmException{
		Utente utente = new Utente();
		utente.setNickname(RandomStringUtils.randomAlphabetic(8));
		
		
		byte[] password = new StringBuffer("edoardo").toString().getBytes();
		ShaPasswordEncoder passwordEncoder = new ShaPasswordEncoder();
		
		String salt =utente.getNickname()+"il mattino ha l'oro in bocca";
		String encPassword = passwordEncoder.encodePassword(new String(password), salt);
		
		utente.setPassword(encPassword);
		utente.setDataInizio(new Date());
		utente.setIsSospeso(false);
		adminService.insertNewUtente(utente);
	}

//	public void testGetUtenteByCredential() {
//		Utente utente = new Utente();
//		utente.setNickname("patata");
//		utente.setPassword("pardo");
//		Utente u = adminService.getUtenteByCredential(utente);
//		DateFormat df = SimpleDateFormat.getDateInstance(DateFormat.DATE_FIELD,Locale.ITALIAN);
//		System.out.println(df.format(u.getDataInizio()));
//	}
//	
	
	public void testSospendiUtente(){
		Utente utente = new Utente();
		utente.setNickname("pardo");
		
		
	}
	
	public void testFindUtenteByNickName(){
		System.out.println("AdminServiceImplTest.testFindUtenteByNickName()");
		Utente utente = new Utente();
		utente.setNickname("pardo");
		utente = getAdminService().findUtenteByNickname(utente);
		System.out.println(utente);
	}
	
	public void testInsertNewRuolo(){
		Ruolo ruolo = new Ruolo();
		ruolo.setIdRuolo(new Integer(1));
		ruolo.setIsAdmin(true);
		ruolo.setIsRo(false);
		ruolo.setIsRw(true);
		Utente utente = new Utente();
		utente.setNickname("patata");
		utente = adminService.findUtenteByNickname(utente);
		ruolo.setDescrizione("ADMINISTRATOR");
		adminService.insertNewRuolo(ruolo);
	}
	
	public void testSaveOrUpdate() throws NoSuchAlgorithmException{
		Utente utente = new Utente();
		utente.setNickname(RandomStringUtils.randomAlphabetic(8));
		
		
		byte[] password = new StringBuffer("edoardo").toString().getBytes();
		ShaPasswordEncoder passwordEncoder = new ShaPasswordEncoder();
		
		String salt =utente.getNickname()+"il mattino ha l'oro in bocca";
		String encPassword = passwordEncoder.encodePassword(new String(password), salt);
		
		utente.setPassword(encPassword);
		utente.setDataInizio(new Date());
		utente.setIsSospeso(false);
		InfoUtente infoUtente = new InfoUtente();
		infoUtente.setNome("aa");
		infoUtente.setCognome("bb");
		infoUtente.setDataNascita(new Date());
		infoUtente.setEmail("email");
		infoUtente.setUtente(utente);
		adminService.saveOrUpdate(infoUtente);
	}
	
	public AdminService getAdminService() {
		return adminService;
	}

	public void setAdminService(AdminService adminService) {
		this.adminService = adminService;
	}

	protected String[] getConfigLocations() {
		
		return new String[]{"file:c:/sviluppo/ladybug/src/web/ladybug/WEB-INF/application-beans.xml"};
	}
	
	
	
	

}
